C 언어 구조체
IT 위키
C 언어 구조체(Structure in C, 構造體)는 여러 개의 변수(멤버)를 하나로 묶어 하나의 사용자 정의 자료형으로 정의할 수 있는 기능을 제공하는 자료형이다.
1 개요[편집 | 원본 편집]
구조체는 서로 다른 데이터 타입을 하나의 단위로 묶어야 할 때 사용되며, 배열, 포인터, 함수 등 다양한 데이터 타입을 멤버로 포함할 수 있다. 구조체는 C 프로그램에서 복잡한 데이터를 표현하거나 객체를 흉내 내는 데에 자주 사용된다.
2 구조체 정의[편집 | 원본 편집]
구조체는 `struct` 키워드를 사용하여 정의하며, 다음과 같은 형식을 따른다.
struct 구조체이름 {
자료형 멤버이름1;
자료형 멤버이름2;
...
};
예시:
struct Point {
int x;
int y;
};
3 구조체 변수 선언 및 초기화[편집 | 원본 편집]
정의된 구조체는 다음과 같이 변수를 선언하거나 초기화할 수 있다.
struct Point p1; // 변수 선언
struct Point p2 = {3, 5}; // 초기화
4 구조체 멤버 접근[편집 | 원본 편집]
구조체 변수의 멤버에 접근할 때는 마침표(`.`) 연산자를 사용한다. 포인터 변수인 경우 화살표(`->`) 연산자를 사용한다.
p1.x = 10;
p1.y = 20;
struct Point* ptr = &p1;
printf("%d", ptr->x); // 출력: 10
5 typedef를 사용한 구조체 간소화[편집 | 원본 편집]
`typedef`를 이용하면 구조체 이름을 간단하게 별칭으로 정의할 수 있다.
typedef struct Point {
int x;
int y;
} Point;
Point p3 = {1, 2};
6 구조체와 함수[편집 | 원본 편집]
구조체는 함수의 인자나 반환값으로 사용할 수 있다.
- 구조체를 값으로 전달하면 복사본이 전달됨
- 구조체 포인터를 전달하면 원본 데이터 수정 가능
void move(Point* p, int dx, int dy) {
p->x += dx;
p->y += dy;
}
7 중첩 구조체[편집 | 원본 편집]
구조체 안에 다른 구조체를 멤버로 포함할 수 있다.
struct Rectangle {
struct Point topLeft;
struct Point bottomRight;
};
8 구조체 배열[편집 | 원본 편집]
구조체는 배열로도 선언 가능하다.
struct Point points[5];
points[0].x = 10;
9 관련 키워드[편집 | 원본 편집]
- struct
- typedef
- 포인터
- 사용자 정의 자료형
10 같이 보기[편집 | 원본 편집]
11 참고 문헌[편집 | 원본 편집]
- Brian W. Kernighan, Dennis M. Ritchie, *The C Programming Language*, Prentice Hall, 1988.
- 한동윤, *명품 C 언어 프로젝트*, 생능출판사, 2020.